﻿/*
 * array.h
 *
 *  Created on: 2019年5月5日
 *      Author: DELL
 */

#ifndef ARRAY2_H_
#define ARRAY2_H_

#include <stdio.h>
#include <stdlib.h>

#include "main.h"

typedef enum
{
	ARRAY2_OPS_OK = 0,		//操作成功
	ARRAY2_OPS_FULL,		//数组满
	ARRAY2_OPS_EMPTY,		//数组空
	ARRAY2_SIZE_ERR,		//传入数据出错，太多或者为0
	ARRAY2_MEM_ERR,		//内存申请出错
	ARRAY2_PTR_ERR,		//数组指针错误
}Array2Err;

typedef struct _Array2
{
	uint8_t *buffer;
	uint16_t row;			//行
	uint16_t column;		//列
	uint16_t write;			//添加位置
	uint16_t read;			//读出位置
	uint8_t full;			//是否为满
}Array2;

int array2_is_empty(Array2 *array2);
int array2_is_full(Array2 *array2);
uint16_t array2_get_size(Array2 *array2);
uint16_t array2_get_row(Array2 *array2);
Array2Err array2_malloc(Array2 *array2, uint16_t row, uint16_t column);
Array2Err array2_free(Array2 *array2);
Array2Err array2_put_lifo(Array2 *array2, uint8_t *buf, uint16_t size);
Array2Err array2_put_fifo(Array2 *array2, uint8_t *buf, uint16_t size);
Array2Err array2_post(Array2 *array2, uint8_t *buf, uint16_t *size);
Array2Err array2_clear(Array2 *array2);

#endif /* ARRAY2_H_ */
